package com.piece.file.client;

import com.piece.file.model.TbSysFile;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;

/**
 * 文件客户端
 */
public interface FileClient {

    /**
     * 客户端名称
     */
    String getName();

    /**
     * 存储图片
     *
     * @param file       原始文件
     * @param basePath   系统文件存储路径
     */
    TbSysFile store(MultipartFile file, String basePath) throws Exception;

    /**
     * 存储压缩图片
     *
     * @param file       原始文件
     * @param basePath   系统文件存储路径
     * @param maxWidth   图片最大长度
     */
    TbSysFile storeScale(MultipartFile file, String basePath, int maxWidth) throws Exception;

    /**
     * 存储压缩图片
     *
     * @param file       原始文件
     * @param basePath   系统文件存储路径
     * @param width      图片最大宽度
     * @param height     图片最大高度
     */
    TbSysFile storeScale(MultipartFile file, String basePath, int width, int height) throws Exception;

    /**
     * 写入文件
     */
    TbSysFile writeToStore(byte[] bytes, String storePath, String originalFilename, long fileSize) throws Exception;

    /**
     * 写入文件到服务器
     */
    String writeToLocalStore(byte[] bytes, String path, String name) throws IOException;

    /**
     * 下载文件
     *
     * @param file
     */
    InputStream downloadFile(TbSysFile file) throws Exception;

    /**
     * 更新文件
     *
     * @param file
     */
    void updateFile(TbSysFile file);

    /**
     * 删除文件
     *
     * @param file
     */
    void deleteFile(TbSysFile file) throws Exception;
}
